def out_func(num1):
    a = 10
    def inner_func(num2):

        sum = num1+num2

        a = 100

        print(sum,a)

        return sum
    print(
        "--------",a
    )
    return inner_func


f = out_func(1)
f1 = out_func(2)
print(f(2))
print(f1(2))
#装饰器
def log(mode=0): #传入参数可以匹配不同的方式
    def func_log(func):
        print("打印前")
        func()
        print("打印后")

    def func_log1(func):
        print("另一种打印前")
        func()
        print("另一种打印后")

    return func_log if mode==0 else func_log1


def service():
    print("业务逻辑")

#设计模式:装饰器模式
f1 = log(1) #装饰的"外衣"
f1(service)

#自带语法
@log(1)
def service2():
    print("业务代码2")
